/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"1BBEAF1B-01A3-47F5-AC12-7652F2A5EE03",variableType:4}
 */
var fHabitacion = null;

/**
 * @type {Date}
 *
 * @properties={typeid:35,uuid:"3108CDC9-8303-4C41-BF29-BAF7C33D0530",variableType:93}
 */
var fFechaHasta = null;

/**
 * @type {Date}
 *
 * @properties={typeid:35,uuid:"16C484C6-979A-47CF-AC66-8D4748462903",variableType:93}
 */
var fFechaDesde = null;


/**
 * Callback method when form is (re)loaded.
 *
 * @param {JSEvent} [event] the event that triggered the action
 *
 * @properties={typeid:24,uuid:"34624A72-96CF-43A1-BE41-E44E7A176A76"}
 */
function onLoad(event) {
	var $name = 'disponibilidad_masiva_dtl'
	history.removeForm($name)
	solutionModel.removeForm($name)
	
	var $frm = solutionModel.newForm($name,null,'hoteleria_'+gcadena_to_cadenas.estilo,false,270,130)
	$frm.styleClass = 'blanco'
	$frm.navigator = SM_DEFAULTS.NONE	
	
	var $title = $frm.newLabel('Disponibilidad',0,0,200,20)
	$title.styleClass = 'negrita'
	
	var $tipos_cli = application.getValueListItems('tipos_cliente')
	var $cant = $tipos_cli.getMaxRowIndex()
	for (var i = 1 ; i <= $cant ; i++)
	{
		var $lbl = $frm.newLabel($tipos_cli.getValue(i,1),0,25*i,85,20)
		$lbl.styleClass = 'letrachica_negro'
			
		var $var = $frm.newVariable('fTipo'+$tipos_cli.getValue(i,2),JSVariable.NUMBER)
		$var.defaultValue = '0'

		var $field = $frm.newField($var,JSField.TEXT_FIELD,90,25*i,50,20)
		$field.styleClass = 'redondo'
		$field.horizontalAlignment = SM_ALIGNMENT.RIGHT
	}
	
	forms[$name].controller.recreateUI()
	elements.tab_dtl.addTab($name)
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"855D8A69-15FC-46F3-A9D9-ED91EBC2B4F2"}
 */
function calendarioDesde(event) {
	var $hoy = application.getServerTimeStamp()
	var $fDesde = new Date($hoy.getFullYear(), $hoy.getMonth(),$hoy.getDate(), 0,0,0,0)
	var $fHasta = new Date($hoy.getFullYear() +1, $hoy.getMonth(),$hoy.getDate(), 0,0,0,0)
	var $form = globals.mostrarCalendarioMes($hoy.getMonth()+1, $hoy.getFullYear(), $fDesde, $fHasta, 'POPUP',null,'hoteleria_'+gcadena_to_cadenas.estilo)
	plugins.window.showFormPopup(elements.fld_fechaDesde,forms[$form],forms.disponibilidad_masiva,'fFechaDesde')
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"332787CE-D403-4487-B07E-C203935E2C1D"}
 */
function calendarioHasta(event) {
	if (fFechaDesde == null)
	{
		globals.DIALOGS.showWarningDialog('Avios','Debe elegir la fecha desde primero','OK')
		return
	}
	var $fDesde = new Date(fFechaDesde.getFullYear(), fFechaDesde.getMonth(),fFechaDesde.getDate(), 0,0,0,0)
	var $fHasta = new Date(fFechaDesde.getFullYear() +1, fFechaDesde.getMonth(),fFechaDesde.getDate(), 0,0,0,0)
	var $form = globals.mostrarCalendarioMes($fDesde.getMonth()+1, $fDesde.getFullYear(), $fDesde, $fHasta, 'POPUP',null,'hoteleria_'+gcadena_to_cadenas.estilo)
	plugins.window.showFormPopup(elements.fld_fechaHasta,forms[$form],forms.disponibilidad_masiva,'fFechaHasta')
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"0A84DED7-EEBC-4A04-B8DE-1B22EAD35D41"}
 */
function guardar(event) {
	if (!fHabitacion || !fFechaDesde || !fFechaHasta)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Por favor, ingrese todos los campos obligatorios','OK')
		return
	}
	if (!valida())
	{
		globals.DIALOGS.showWarningDialog('Aviso','Ya existen disponibilidades para esa habitación en ese rango de fechas','OK')
		return
	}
	
	alta()
	
	if (!databaseManager.saveData())
	{
		globals.DIALOGS.showWarningDialog('Aviso','Ocurrio un error al grabar. Inténtelo nuevamente', 'OK')
		return
	}
	else
	{
		globals.DIALOGS.showInfoDialog('Aviso','Los datos han sido modificados','OK')
		salir()
		return
	}
}

/**
 * @properties={typeid:24,uuid:"00A43E59-15B6-4DF5-B86F-794F7D08E536"}
 */
function valida()
{
	var $sql = 'SELECT disponibilidad_id FROM disponibilidad WHERE fecha BETWEEN ? AND ? AND tipo_habitacion_id = ?'
	var $args = [fFechaDesde, fFechaHasta, fHabitacion]
	var $ds = databaseManager.getDataSetByQuery('hoteleria',$sql,$args,-1)
	if ($ds.getMaxRowIndex() == 0)
		return true
	return false
}

/**
 * @properties={typeid:24,uuid:"C1A65CC8-8A25-44B5-A023-D1A38F14DDBE"}
 */
function alta()
{
	var $fechaInicio = new Date(fFechaDesde.getFullYear(), fFechaDesde.getMonth(), fFechaDesde.getDate(),0,0,0,0)
	var $fs = forms.disponibilidad_tbl.foundset
	var $tipos_cli = application.getValueListItems('tipos_cliente')
	var $cant = $tipos_cli.getMaxRowIndex()
	var $frm = forms['disponibilidad_masiva_dtl']
	
	while ($fechaInicio <= fFechaHasta)
	{
		$fs.newRecord()
		
		$fs.tipo_habitacion_id = fHabitacion
		$fs.fecha = $fechaInicio
		
		for (var i = 1 ; i <= $cant ; i++)
		{
			$fs.disponibilidad_to_disponibilidad_detalle.newRecord()
			$fs.disponibilidad_to_disponibilidad_detalle.cantidad 			= $frm['fTipo'+$tipos_cli.getValue(i,2)]
			$fs.disponibilidad_to_disponibilidad_detalle.tipo_cliente_id 	= $tipos_cli.getValue(i,2)
		}
		$fechaInicio.setDate($fechaInicio.getDate()+1)
	}
}

/**
 * @properties={typeid:24,uuid:"7078A16F-75D0-4BFF-A558-E8F7CD84FEE1"}
 */
function salir() {
	databaseManager.revertEditedRecords()
	databaseManager.setAutoSave(true)
	var $win = application.getWindow('DISPONIBILIDAD_MASIVA')
	$win.hide()
	$win.destroy()
}

/**
 * Callback method for when form is shown.
 *
 * @param {Boolean} firstShow form is shown first time after load
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"C2634311-898B-4216-85DD-3900A9A00405"}
 */
function onShow(firstShow, event) {
	fFechaDesde = null
	fFechaHasta = null
	fHabitacion = null
}
